from typing import Optional

from agents import ModelProvider, Model, OpenAIChatCompletionsModel
from openai import AsyncOpenAI


class DeepSeekModelProvider(ModelProvider):
    """
    DeepSeek V3 模型提供商 - 通过 OpenAI兼容接口连接DeepSeek API
    这个类负责提供与 DeepSeek 模型的连接，通过 OpenAI 兼容接口调用 DeepSeek API
    """

    def __init__(self, base_url: str, api_key: str, default_model: str):
        self.client = AsyncOpenAI(base_url=base_url, api_key=api_key)
        self.default_model = default_model

    def get_model(self, model_name: Optional[str] = None) -> Model:
        """
        获取模型实例，根据提供的模型名称创建并返回一个Openai兼容的模型实例

        Args:
            model_name (str): 模型名称，如果为空，则使用默认模型

        Returns:
            Model: OpenAI兼容的模型实例
        """
        return OpenAIChatCompletionsModel(
            model=model_name or self.default_model,
            openai_client=self.client
        )
